home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / var / lib / python-support / python2.6 / rdflib / URIRef.pyc (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2009-04-20  |  3.6 KB  |  101 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. from sys import version_info
  5.  
  6. try:
  7.     from hashlib import md5
  8. except ImportError:
  9.     from md5 import md5
  10.  
  11. if version_info[0:2] > (2, 2):
  12.     from unicodedata import normalize
  13. else:
  14.     normalize = None
  15. from urlparse import urlparse, urljoin, urldefrag
  16. from rdflib.Identifier import Identifier
  17. from rdflib.compat import rsplit
  18.  
  19. class URIRef(Identifier):
  20.     '''
  21.     RDF URI Reference: http://www.w3.org/TR/rdf-concepts/#section-Graph-URIref
  22.     '''
  23.     __slots__ = ()
  24.     
  25.     def __new__(cls, value, base = None):
  26.         if base is not None:
  27.             ends_in_hash = value.endswith('#')
  28.             value = urljoin(base, value, allow_fragments = 1)
  29.             if ends_in_hash:
  30.                 if not value.endswith('#'):
  31.                     value += '#'
  32.                 
  33.             
  34.         
  35.         
  36.         try:
  37.             rt = unicode.__new__(cls, value)
  38.         except UnicodeDecodeError:
  39.             rt = unicode.__new__(cls, value, 'utf-8')
  40.  
  41.         return rt
  42.  
  43.     
  44.     def n3(self):
  45.         return '<%s>' % self
  46.  
  47.     
  48.     def concrete(self):
  49.         if '#' in self:
  50.             return URIRef('/'.join(rsplit(self, '#', 1)))
  51.         return self
  52.  
  53.     
  54.     def abstract(self):
  55.         if '#' not in self:
  56.             (scheme, netloc, path, params, query, fragment) = urlparse(self)
  57.             if path:
  58.                 return URIRef('#'.join(rsplit(self, '/', 1)))
  59.             if not self.endswith('#'):
  60.                 return URIRef('%s#' % self)
  61.             return self
  62.         '#' not in self
  63.         return self
  64.  
  65.     
  66.     def defrag(self):
  67.         if '#' in self:
  68.             (url, frag) = urldefrag(self)
  69.             return URIRef(url)
  70.         return self
  71.  
  72.     
  73.     def __reduce__(self):
  74.         return (URIRef, (unicode(self),))
  75.  
  76.     
  77.     def __getnewargs__(self):
  78.         return (unicode(self),)
  79.  
  80.     
  81.     def __eq__(self, other):
  82.         if isinstance(other, URIRef):
  83.             return unicode(self) == unicode(other)
  84.         return False
  85.  
  86.     
  87.     def __str__(self):
  88.         return self.encode('unicode-escape')
  89.  
  90.     
  91.     def __repr__(self):
  92.         return "rdflib.URIRef('%s')" % str(self)
  93.  
  94.     
  95.     def md5_term_hash(self):
  96.         d = md5(str(self))
  97.         d.update('U')
  98.         return d.hexdigest()
  99.  
  100.  
  101.